home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / SJ SDK / VisFramework.h < prev    next >
Text File  |  1999-07-27  |  6KB  |  153 lines

  1.  
  2. //============================================================================
  3. //----------------------------------------------------------------------------
  4. //                                VisFramework.h
  5. //                                version 1.0.0
  6. //                                Mike Wright
  7. //                                darwin@mbay.net
  8. //
  9. //    Header file for the Visual Framework Plug-in module.
  10. //
  11. //----------------------------------------------------------------------------
  12. //============================================================================
  13.  
  14.  
  15. #pragma once
  16.  
  17.  
  18. #ifndef DEBUGLEVEL
  19. #define DEBUGLEVEL    DEBUGON
  20. #endif
  21.  
  22. #include "SoundJamAPI.h"
  23. #include "VisualPlugin.h"
  24.  
  25.  
  26. /*==================================================================================================
  27.                                     Defines
  28. ==================================================================================================*/
  29.  
  30.  
  31. /* visual framework plugin drawing modes */
  32. /*
  33. enum
  34. {    kLetterMode        = 1,
  35.     kLineMode        = 2,
  36.     kBoxMode        = 3,
  37.     kTwoColorMode    = 4,
  38.     kMultiColorMode    = 5
  39. };*/
  40.  
  41. /*==================================================================================================
  42.                                     Typedefs
  43. ==================================================================================================*/
  44.  
  45. /*======================================================================*/
  46. /* This is the struct that contains the global data that is stored in    */
  47. /* the refcon, restored in VisHandler(), and passed by VisHandler() to  */
  48. /* the handler  routines as *plugInData.                                */
  49. /*                                                                        */
  50. /* For purposes of the framework, fields have been included that match    */
  51. /* most fields of the various structs associated with the various         */
  52. /* messages. They are filled in by the handler routines for those         */
  53. /* messages.                                                            */
  54. /*                                                                        */
  55. /* You may remove any of these fields that your plugin does not use.    */
  56. /*                                                                        */
  57. /* There are also fields that are specific to the internal operation    */
  58. /* of the plugin module. These will change, depending on the needs of    */
  59. /* your plugin.                                                        */
  60. /*======================================================================*/
  61.  
  62. class WhiteCap;
  63.  
  64. struct VisHandlerData
  65. {
  66.     /* VisualPluginInitMessage data*/
  67.     void                *appCookie;
  68.     SoundJamProcPtr        playerProc;
  69.     UInt32                version;
  70.     
  71.     /* VisualPluginShowWindowMessage data */
  72.     CGrafPtr            port;
  73.     Rect                drawRect;
  74.     
  75.     /* VisualPluginPlayMessage data */
  76.     TrackSpec            *trackSpec;
  77.     SInt32                volume;
  78.     UInt32                bitRate;
  79.     SoundComponentData    soundFormat;
  80.     
  81.     /* VisualPluginRenderMessage data */
  82.     RenderVisualData    renderData;
  83.  
  84.     /* VisualPluginProcessSamplesMessage */
  85.     UInt32                timeStampID;
  86.     SInt16                *sampleBuffer;        /* the data in this buffer may be modified by the plugin    */
  87.     UInt32                numSamples;
  88.     UInt32                maxSamples;
  89.     UInt32                numOutputSamples;    /* must be less than or equal to maxSamples                 */
  90.     
  91.     /* framework-specific data */
  92.     OSType                magic;                /* used to identify our plugin for debugging purposes        */
  93.     Boolean                visEnabled;            /* is it okay to draw to the module window?                    */
  94.     UInt8                drawMode;            /* kLetterMode, kLineMode, and kBoxMode are possible values    */
  95.     UInt8                colorMode;            /* kTwoColorMode and kMultiColorMode are possible values    */
  96.     SInt16                LRcolor;            /* one of the eight basic QuickDraw color values            */
  97.     SInt16                RLcolor;            /* one of the eight basic QuickDraw color values            */
  98.  
  99.     float                mSample[ NUM_SAMPLE_BINS ];
  100.     WhiteCap*            mWC;
  101. };
  102. typedef struct VisHandlerData VisHandlerData;
  103.  
  104.  
  105. /*======================================================================*/
  106. /* In our HandleCancelMessage() function, we set these fields to their    */
  107. /* equivalents in VisHandlerData. Then we use the PlayerSetPluginData()    */
  108. /* function to send this struct to SoundJam.                            */
  109. /* In our HandleInitializeMessage() function, we retrieve it from         */
  110. /* SoundJam using the PlayerSetPluginData() function.                    */
  111. /*                                                                         */
  112. /* You can modify this struct to save any preferences that you choose.    */
  113. /*======================================================================*/
  114. struct VisPluginPrefs
  115. {
  116.     UInt8                drawMode;            /* kLetterMode, kLineMode, and kBoxMode are possible values    */
  117.     UInt8                colorMode;            /* kTwoColorMode and kMultiColorMode are possible values    */
  118.     SInt16                LRcolor;            /* one of the eight basic QuickDraw color values            */
  119.     SInt16                RLcolor;            /* one of the eight basic QuickDraw color values            */    
  120. };
  121. typedef struct VisPluginPrefs     VisPluginPrefs; 
  122.  
  123. /*==================================================================================================
  124.                                     Function Prototypes
  125. ==================================================================================================*/
  126.  
  127. /* functions in VisFrameworkMain.c */
  128. OSStatus main (OSType message, PluginMessageInfo *messageInfo, void *refcon);
  129. OSStatus VisHandler (OSType message, VisualPluginMessageInfo *messageInfo, void *refcon);
  130.  
  131. /* functions in VisFrameworkHandlers.c */
  132. OSStatus HandleInitializeMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  133. OSStatus HandleCleanupMessage (VisHandlerData *plugInData);
  134. OSStatus HandleEnableMessage (VisHandlerData *plugInData);
  135. OSStatus HandleDisableMessage (VisHandlerData *plugInData);
  136. OSStatus HandleShowWindowMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  137. OSStatus HandleSetWindowMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  138. OSStatus HandleHideWindowMessage (VisHandlerData *plugInData);
  139. OSStatus HandleResizeMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  140. OSStatus HandlePlayMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  141. OSStatus HandleStopMessage (VisHandlerData *plugInData);
  142. OSStatus HandlePauseMessage (VisHandlerData *plugInData);
  143. OSStatus HandleUnpauseMessage (VisHandlerData *plugInData);
  144. OSStatus HandleRenderMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  145. OSStatus HandleProcessSamplesMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  146. OSStatus HandleFlushSamplesMessage (VisHandlerData *plugInData);
  147. OSStatus HandleEventMessage (VisualPluginMessageInfo *messageInfo, VisHandlerData *plugInData);
  148. OSStatus HandleUpdateMessage (VisHandlerData *plugInData);
  149. OSStatus HandleIdleMessage (VisHandlerData *plugInData);
  150.  
  151.  
  152. void HandlePlugInMouseDown (VisHandlerData *plugInData, EventRecord *theEvent);
  153.